#ifndef CCAS_H
#define CCAS_H

#include <stdio.h>
//#include "type.h"

//结点数据域的长度
#define CCAS_LENGTH 64
//结点定义
struct list1
{
    int data[CCAS_LENGTH];
    int len;
    struct list1* next;
    struct list1* prev;
};
typedef struct list1 node1;
typedef node1 *string;

//插入字符
int ccas_insert(string *L1, int C1);
//释放串
void ccas_free(string* L1);
// 链表串查找
size_t ccas_find(string M, int T);
// 链表串随机插入
int ccas_ninsert(string* M, size_t pos, int item);
// 链表串输出
size_t ccas_print(string M);
// 出栈
int ccas_pop(string* M);

/* 注意，空的 string 可能会引发段错误 */
/* 注意，在串中使用了取下标符号以解引用，这会被解释为下标越界 */

//从标准输入流读取链表串
string ccas_r();
//从字符串读取链表串
string ccas_rs(char* CS1);
//从字符串读取链表串并追加
string ccas_as(string *s1, const char *c1);
//从文件中读取链表串
string ccas_rf(char* path);
//从文件流中读取链表串
string ccas_rf2(FILE* f1);
//从设备中读取链表串
string ccas_rf3(int fd);
//将链表串转换为字符串（用完需要释放）
char* ccas_ws(string L1);
//将链表串写到文件
int ccas_wf(string L1, char* Path1);

// 合并两个链串（未完工）
string ccas_cat(string *M, string T);

#endif